<?php
include_once $REP_CLASS . 'Selector.php';

class Utilasso {

private $refutilisateur  = 0;
private $refassociation  = 0;
private $assocPDO;
private $sqlInsert;
private $reqInsert;
private $sqlDelete;
private $reqDelete;
private $sqlUpdate;
private $reqUpdate;

/**
 * Constructeur
 * @db : la connexion de la base de donn�e
 */
 function __construct($db){

      // Cr�ation de la connexion
      $this->assocPDO = $db;
      // Initialisation des requ�tes
      $this->initRequete();
      // Pr�paration des requ�tes
      $this->prepare();
    
}
/**
 * Initialisation des requ�tes pr�par�es
 */
private function initRequete(){

      $this->sqlInsert = "INSERT INTO utilasso (refutilisateur, refassociation) VALUES(?, ?)";
      $this->sqlDelete = "DELETE FROM utilasso WHERE `refutilisateur` = ? AND `refassociation` = ?";
      $this->sqlUpdate = "UPDATE utilasso SET refutilisateur=?, refassociation=? WHERE `refutilisateur` = ? AND `refassociation` = ?";
    
}
/**
 * Pr�paration des requ�tes
 */
private function prepare(){

      $this->reqInsert       = $this->assocPDO->prepare($this->sqlInsert);
      $this->reqDelete       = $this->assocPDO->prepare($this->sqlDelete);
      $this->reqUpdate       = $this->assocPDO->prepare($this->sqlUpdate);
    
}
/**
 * Insertion en base des infos de l'utilisateur
 */
public function insertion(){
  
      // Requete d'insertion
      $champs = array($this->refutilisateur, $this->refassociation);

      try
      {
         return $this->reqInsert->execute($champs);
      }
      catch(Exception $e)
      {
         echo 'Erreur : <br>'; print_r($this->reqInsert->errorInfo());
         throw new Exception('Une erreur est survenue lors de l\'insertion dans utilasso.' . $e->getMessage());
      }
    
}
/**
 * Modification des infos de l'utilisateur
 */
public function modification(){

      // Requete de modification
      $champs = array($this->refutilisateur, $this->refassociation);

      try
      {
         return $this->reqUpdate->execute($champs);
      }
      catch(Exception $e)
      {
         echo 'Erreur : <br>'; print_r($this->reqUpdate->errorInfo());
         throw new Exception('Une erreur est survenue lors de la modification dans utilasso.');
      }
    
}
/**
 * Suppression de l'utilisateur � partir de son ID
 */
public function suppression(){

      // Requete de suppression
      try
      {
         return $this->reqDelete->execute(array($this->refutilisateur, $this->refassociation));
      }
      catch(Exception $e)
      {
         echo 'Erreur : <br>'; print_r($this->reqDelete->errorInfo());
         throw new Exception('Une erreur est survenue lors de la suppression dans utilasso.');
      }
    
}
/**
 * Select
 */
public function select(){

      $select = new Selector();
      $champs = array("refutilisateur"=>$this->refutilisateur, "refassociation"=>$this->refassociation);
      
      foreach($champs as $cle=>$valeur) 
      {
        // Les Champs
        $select->addChamp($cle);
        // Les Crit�res
        if( !empty($valeur) )
         $select->addCritere($cle, $valeur);
      }
      
      // La Table
      $select->addFrom('utilasso');

      //echo 'requete : ' . $select->toString();
      return $this->assocPDO->query($select->toString());
    
}
/**
 * Charge les infos de utilasso
 */
public function charge(){

      $user = new Utilasso($this->assocPDO);
      $user->setRefutilisateur($this->getRefutilisateur());
      $user->setRefassociation($this->getRefassociation());
      // Lecture de la premi�re ligne
      $stmt = $user->select();
      $result = $stmt->fetch();

      $this->refutilisateur=$result['refutilisateur'];
$this->refassociation=$result['refassociation'];


      // Fermeture du curseur
      $stmt->closeCursor();
   
}
/**
 * Affiche les infos de l'utilisateur
 */
public function affichage(){

      $champs = array("refutilisateur"=>$this->refutilisateur, "refassociation"=>$this->refassociation);
      echo "==== Fiche Utilasso ==== <br>";
      foreach($champs as $cle=>$valeur) 
      {
        echo $cle . " : " . $valeur;
        echo "<br>";
      }
      echo "==========================<br>";
  
}
/**
 * Retrieves the value from the field refutilisateur
 * @return String with the value of the field
 */
public function getRefutilisateur(){
  return $this->refutilisateur;
}
/**
 * Retrieves the value from the field refassociation
 * @return String with the value of the field
 */
public function getRefassociation(){
  return $this->refassociation;
}
/**
 * Set the value from the field refutilisateur
 * @param refutilisateur String with the value for the field
 */
public function setRefutilisateur($refutilisateur){
  $this->refutilisateur = $refutilisateur;
}
/**
 * Set the value from the field refassociation
 * @param refassociation String with the value for the field
 */
public function setRefassociation($refassociation){
  $this->refassociation = $refassociation;
}
}
?>